package View;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import Queue.Scheduler;
public class GUI extends JFrame {
private static final long serialVersionUID = 1L;
private JLabel arrivingtime;
private JLabel servicetime;
private JLabel simulationtime;
private JLabel q1, q2, q3;
private static JTextField minarrtime;
private static JTextField maxarrtime;
private static JTextField minservice;
private static JTextField maxservice;
private static JTextField simtime;
private static JTextArea textarea = new JTextArea();
private JScrollPane scrollbar = new JScrollPane(textarea);
private JButton start;
ScheduledExecutorService exec = Executors.newScheduledThreadPool(1);
private Runnable simulator= new Runnable(){
public void run(){
new Scheduler();
}
};
public GUI() {
super("Queue Simulator");
setLayout(null);
arrivingtime = new JLabel("Min and Max interval of arriving time: ");
servicetime = new JLabel("Min and Max service time: ");
q1 = new JLabel("Queue 1");
q2 = new JLabel("Queue 2");
q3 = new JLabel("Queue 3");
simulationtime = new JLabel("Simulation Time: ");
minarrtime = new JTextField();
maxarrtime = new JTextField();
minservice = new JTextField();
maxservice = new JTextField();
simtime = new JTextField();
start = new JButton("Start");
arrivingtime.setBounds(10, 5, 300, 30);
add(arrivingtime);
minarrtime.setBounds(10, 35, 70, 20);
add(minarrtime);
maxarrtime.setBounds(105, 35, 70, 20);
add(maxarrtime);
servicetime.setBounds(10, 60, 300, 30);
add(servicetime);
minservice.setBounds(10, 90, 70, 20);
add(minservice);
maxservice.setBounds(105, 90, 70, 20);
add(maxservice);
simulationtime.setBounds(10, 120, 100, 30);
add(simulationtime);
simtime.setBounds(10, 150, 70, 20);
add(simtime);
start.setBounds(55, 200, 70, 30);
add(start);
scrollbar.setBounds(10, 250, 350, 200);
add(scrollbar);
q1.setBounds(450, 5, 80, 30);
add(q1);
q2.setBounds(560, 5, 80, 30);
add(q2);
q3.setBounds(670, 5, 80, 30);
add(q3);
start.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
exec.execute(simulator);
//new Scheduler();
}
});
setSize(800, 500);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
}
public static int getMinArrivalTime() {
int minarr = Integer.parseInt(minarrtime.getText());
return minarr;
}
public static int getMaxArrivalTime() {
int maxarr = Integer.parseInt(maxarrtime.getText());
return maxarr;
}
public static int getMinServiceTime() {
int minserv = Integer.parseInt(minservice.getText());
return minserv;
}
public static int getMaxServiceTime() {
int maxserv = Integer.parseInt(maxservice.getText());
return maxserv;
}
public static long getSimulationTime() {
long sim = Integer.parseInt(simtime.getText());
return sim;
}
public static void displayText(String text) {
System.out.println(text + "\n");
textarea.append(text + "\n");
}
}